High performance graphics systems employ buffer memory to store surface data. The contents of these buffers describe certain features of an object's surface, such as color, or a distance along a z-axis (depth) from the viewer. The data is stored, for each pixel, in order to support pixel-oriented algorithms that solve problems, such as hidden surface removal or anti-aliasing. These algorithms are supported by hardware facilities that perform relatively simple operations, such as comparing a value stored in a memory location against another value.
Traditionally, the organization of these buffers is rather restrictive and permits only certain, predefined usages. This restriction is primarily a consequence of hardware capabilities. These restrictions prevent equipping the buffers with more processing power and providing readily accessible data paths with higher bandwidths. By example, it is usually not possible to simultaneously compare two values against two different buffer locations. Such limitations of traditional buffer architectures makes them generally unusable for advanced graphics algorithms that require more powerful and complex operations and tests on the buffers.
More particularly, it is well recognized that computer graphics is an indispensable tool in many scientific, technical, and medical disciplines. The efficiency of users, such as an engineer using a CAD program, is improved significantly if the graphical display responds interactively to user input and commands. However, there are only a limited number of algorithms that are simple enough to provide interactive performance when executed using the main CPU of a graphics workstation. Thus, most algorithms and applications require hardware support to achieve the necessary throughput and response time for maintaining the required real-time performance.
To this end, computer graphics workstations provide a variety of hardware features that support certain algorithms and applications. Among these features are special processing stages tailored to fast execution of typical geometric calculations, such as 4.times.4 matrix operations. Many algorithms are also supported by installing large buffer memories dedicated to storing certain data types, and by providing special operations for these buffers.
These operations implement the core functions of the supported algorithms. The following are examples of functions which have been supported by dedicated graphics buffers: hidden surface removal; anti-aliasing; windowing; and texture mapping.
Memory, or graphics buffers, that provide storage for each pixel on a graphics display form a part of every raster graphics system. Traditionally, such buffers stored information to be displayed on the graphics screen, and therefore were known as frame buffers or display memory.
More advanced workstations are equipped with additional pixel memory, as described by, for example, Kurt Akeley in "The Silicon Graphics 4D/240GTX Superworkstation", IEEE Computer Graphics & Applications, vol. 9, no. 4, pp. 71-83, July 1989, and by Bruce S. Borden, "Graphics Processing on a Graphics Supercomputer", Computer Graphics & Applications, vol. 4, no. 9, pp. 56-62, July 1989. This additional pixel memory supports certain predefined functions. The following describes some of the more popular functions and the manner in which they are supported by pixel buffers.